/* 
给String类中添加一个query方法, 能实现以下功能( 不能使用node自带的包, 需要自己操作字符串实现 );
可以将search字符串转为对象 并返回这个对象
String.prototype.query = function(){  ... }

''.query()  结果为  {}
'?id=100&name=lisi&age=18'.query()  结果为  {id:100,name:'lisi'} 
*/

String.prototype.query = function(){  
    var str = this.slice(1);//id=100&name=lisi
    var arr = str.split("&");//['id=100','name=lisi']
    var obj = {}
    arr.forEach((item)=>{
        var temparr = item.split("=");
        obj[temparr[0]] = temparr[1];
    })
    return obj;
}

console.log(  '?id=100&name=lisi&age=18'.query()  );

/* 
功能2:  
给数组添加一个方法myFindIndex, 模拟数组的findIndex方法.
[].myFindIndex( 1 )  返回  -1
[1,2,3]. myFindIndex( 2 )  返回  1

*/

Array.prototype.myFindIndex = function(it){
    var flag = false;
    var i = 0;
    this.forEach((item,index)=>{
        if( flag == false )
        {
            if( item == it ){
                flag = true;
                i = index;
            }
        }
    })

    if( flag == true ) //找到了
    {
        return i;
    }
    else{  //没找到
        return -1;
    }
};

console.log( [1,100,100,200].myFindIndex(100) );


/* 
功能3:  
给数组添加一个方法mySort, 模拟数组的sort方法.
 [1,2,3]. mySort ( (a,b)=>{ return b-a } )  返回  [3,2,1]

*/

Array.prototype.mySort = function(compare){
    for(var i = 0;i < this.length;i++){
        for(var j = 0;j < this.length-1;j++){
            if( compare( this[j],this[j+1] ) > 0 ){
                var temp = this[j];
                this[j] = this[j+1];
                this[j+1] = temp;
            }
        }
    }
    return this;
}

console.log(  [1,2,3]. mySort ( (a,b)=>{ return b-a } ) );

/* 
功能4:  
给字符串添加一个方法mySplit, 模拟字符串的split方法.
 'hello-world'. mySplit ('-')  返回  ['hello','world']
'hello-world'. mySplit ('')  返回  ['h','e','l','l','o','-','w','o','r','l','d']

*/

String.prototype.mySplit = function(s){
    var arr = [];
    var i = 0;
    var j = 0;

    var tempstr = this;

    if( s.length == 0 ){ // 分隔符是 空字符串
        for(var i =0;i < tempstr.length;i++){
            arr.push( tempstr[i] );
        }
        return arr;
    }

    if( tempstr.indexOf(s) != -1 ){  //字符串中存在 分隔符

        i = tempstr.indexOf(s);
        
        while( i != -1){
            arr.push( tempstr.slice( 0,i ) )
            tempstr = tempstr.slice(i+1);
            i = tempstr.indexOf(s);
            if( i == -1 ){
                arr.push( tempstr );
            }
        }

        return arr;
    }
    else{ //字符串中 不存在 分隔符
        arr.push( tempstr );
        return arr;
    }
}

console.log( 'hello-world-2107'.mySplit ('') );